pacenotes_installer\wizard\page/
state_access.rs1use windows_sys::Win32::Foundation::{HWND, LPARAM};
2use windows_sys::Win32::UI::WindowsAndMessaging as wm;
3
4pub unsafe fn state<'a>(dialog: HWND) -> Option<&'a mut crate::wizard::state::WizardState> {
6 (wm::GetWindowLongPtrW(dialog, wm::GWLP_USERDATA) as *mut crate::wizard::state::WizardState)
7 .as_mut()
8}
9
10pub unsafe fn adopt_state<'a>(
12 dialog: HWND,
13 lparam: LPARAM,
14) -> Option<&'a mut crate::wizard::state::WizardState> {
15 let page = lparam as *const windows_sys::Win32::UI::Controls::PROPSHEETPAGEW;
16 let pointer = if page.is_null() { 0 } else { (*page).lParam };
17 wm::SetWindowLongPtrW(dialog, wm::GWLP_USERDATA, pointer);
18 (pointer as *mut crate::wizard::state::WizardState).as_mut()
19}